/*
	1.创建一个api.js 文件
	2.创建一个常量 conset BASE_URL作为默认url地址
	3.将封装好的方法导入出去
 */
// 创建默认地址 url 常量 
const BASE_URL = "http://localhost:8080"
// 将封装好的函数导入出去
// {url, method, data} 结构参数
export const myRequest = ({
	url,
	method,
	data
}) => {
	// return  promise 从而可以实现promise异步操作
	return new Promise((resolve, reject) => {
		uni.showLoading({
			title: "加载中",
			mask: true
		})
		uni.request({
			// 传入的url地址 
			url: BASE_URL + url,
			// 请求方法可填可不填(get)
			method: method || "get",
			// 请求数据可填可不填 默认空对象
			data: data || {},
			// 配置请求头
			header: {
				"userId": uni.getStorageSync("userId")
			},
			// 响应成功回调函数
			success: (res) => {
				uni.hideLoading();
				// 配置统一的 相应结果 如果 !=0(失败) 将会统一的提示动作
				if (res.data.code == 500) {
					return uni.showToast({
						title: res.data.message,
						icon: "none"
					})
				} else if (res.data.code == 401) {
					return uni.showModal({
						title: '未登录',
						content: '立即登录享海量陪玩',
						confirmText: '登录',
						success(res) {
							if (res.confirm) {
								uni.navigateTo({
									url: '/pages/public/login'
								})
							}
						}
					})
					// return;
					// // 跳转至登陆界面
					// return uni.navigateTo({
					// 	url: '/pages/public/login'
					// })
				}
				// 将请求结果resolve出去
				resolve(res);
			},
			// 如果error也会统一的提示
			fail: (err) => {
				return uni.showToast({
					title: "系统繁忙",
					icon: "none"
				})
				reject(err)
			}
		})
	})
}

// // 怎么使用 ?
// // 这个方法会在每个有后台数据的页面都会使用所以每个页面都引入的话比较麻烦(喜欢的话当我没说！)
// // 我们将这个方法放入vue原型对象中 (看不懂的可以复习去了)
// // 在main.js 中
// import {myRequist } from "./util/api.js"
// Vue.prototype.$myRequist = myRequist

// // 这样我们就能通过vue原型对象取出这个方法从而调用
// // 比如请求轮播图
// getSwipers(){
// 		// 这里没写请求方法和请求数据 都会采用默认 上边封装好的
// 			this.$myRequist({
// 				url: "/api/getlunbo"
// 			}).then(res => {
// 				this.swipers = res.data.message
// 			})
// 		}
